home *** CD-ROM | disk | FTP | other *** search
/ Nebula 2 / Nebula Two.iso / SourceCode / Tutorial / Cookbook / 32.Math / Math.m < prev    next >
Text File  |  1995-06-12  |  2KB  |  85 lines

  1.  
  2. /* Generated by Interface Builder */
  3.  
  4. #import "Math.h"
  5. #import <appkit/Form.h>
  6. #import <stdio.h>
  7.  
  8. #define MAXINT 2147483649
  9.  
  10. extern int getRand(int MaxVal);
  11.  
  12. @implementation Math
  13.  
  14. + new
  15. {
  16.     self = [super new];
  17.     maxNumber = 10;
  18.     firstLine = getRand(maxNumber);
  19.     secondLine = getRand(maxNumber);    
  20.     return self;
  21. }
  22.  
  23. - setFirstLineText:anObject
  24. {
  25.     firstLineText = anObject;
  26.     [firstLineText setIntValue:firstLine];
  27.     return self;
  28. }
  29.  
  30. - setSecondLineText:anObject
  31. {
  32.     secondLineText = anObject;
  33.     [secondLineText setIntValue:secondLine];
  34.     return self;
  35. }
  36.  
  37. - setMaxNumberText:anObject
  38. {
  39.     maxNumberText = anObject;
  40.     return self;
  41. }
  42.  
  43. - setOperand:anObject
  44. {
  45.     operand = anObject;
  46.     [operand setStringValue:"+"];
  47.     return self;
  48. }
  49.  
  50. - Input:sender
  51. {
  52. int answer, panelReply;
  53.     answer = [sender intValue];
  54.     if (answer == firstLine + secondLine) {
  55.         panelReply = NXRunAlertPanel("Professor Gonk-u-lator says",
  56.                     "That is right!", "Another", "Harder", "Easier");
  57.         if (panelReply == 0) {
  58.             if (maxNumber < MAXINT/2) maxNumber *= 2;
  59.         }
  60.         if (panelReply == -1) {
  61.             if (maxNumber > 2) maxNumber /= 2;
  62.         }
  63.         [maxNumberText setIntValue:maxNumber];
  64.         
  65.         [sender setStringValue:""];
  66.         [sender selectTextAt:0];
  67.         firstLine = getRand(maxNumber);
  68.          [firstLineText setIntValue:firstLine];
  69.         secondLine = getRand(maxNumber);
  70.         [secondLineText setIntValue:secondLine];
  71.     } else {
  72.         panelReply = NXRunAlertPanel("Professor Gonk-u-lator says",
  73.                     "Sorry - try again", "Another Try",
  74.                     "Hint", "Quit");
  75.     [sender selectTextAt:0];
  76.         if (panelReply == -1) {
  77.             exit(0);
  78.         }
  79.     }
  80.     return self;
  81. }
  82.  
  83.  
  84. @end
  85.